// Magic Software, Inc.
// http://www.magic-software.com
// Copyright (c) 2000, All Rights Reserved
//
// Source code from Magic Software is supplied under the terms of a license
// agreement and may not be copied or disclosed except in accordance with the
// terms of that agreement.  The various license agreements may be found at
// the Magic Software web site.  This file is subject to the license
//
// RESTRICTED USE SOURCE CODE
// http://www.magic-software.com/License/restricted.pdf

#ifndef MGCOBJECT_H
#define MGCOBJECT_H

#include "MgcController.mcr"
#include "MgcRTTI.h"
#include "MgcSmartPointer.h"
#include "MgcStream.h"


class MgcObject
{
	
    MgcDeclareRootRTTI;
    MgcDeclareRootSmartPointers;
    MgcDeclareRootStream;
    MgcDeclareRootController;

public:
    // destruction
    virtual ~MgcObject ();

    // names
    void SetName (const char* acName);
	const char* GetName () const;

    // unique identification
    unsigned int GetID () const;

protected:
    // construction (abstract base class)
    MgcObject ();

    // identification
    char* m_acName;
    unsigned int m_uiID;
    static unsigned int ms_uiNextID;
};

MgcSmartPointer(MgcObject);
#include "MgcObject.inl"

#endif
